import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

class WebViewPage extends StatefulWidget {
  @override
  _WebViewPageState createState() => _WebViewPageState();
}

class _WebViewPageState extends State<WebViewPage> {
  late WebViewController _webViewController;
  final TextEditingController _urlController = TextEditingController(text: 'https://www.bing.com'); // 默认地址
  String currentUrl = '';

  late final Color backgroundColor = Color(0x00000000);
  late final JavaScriptMode javaScriptMode = JavaScriptMode.unrestricted;

  @override
  void initState() {
    super.initState();
    late final PlatformWebViewControllerCreationParams params;
    params = const PlatformWebViewControllerCreationParams();
    final WebViewController controller = WebViewController.fromPlatformCreationParams(params);
    controller
      ..setJavaScriptMode(javaScriptMode)
      ..setBackgroundColor(backgroundColor)
      ..setNavigationDelegate(
        NavigationDelegate(
//           onProgress: (int progress) {
//             debugPrint('WebView is loading (progress : $progress%)');
//           },
//           onPageStarted: (String url) {
//             debugPrint('Page started loading: $url');
//             // .currentUrl() = url;
//           },
//           onPageFinished: (String url) {
//             debugPrint('Page finished loading: $url');
//           },
//           onWebResourceError: (WebResourceError error) {
//             debugPrint('''
// Page resource error:
//   code: ${error.errorCode}
//   description: ${error.description}
//   errorType: ${error.errorType}
//   isForMainFrame: ${error.isForMainFrame}
//           ''');
//           },
          onNavigationRequest: (NavigationRequest request) {
            // if (request.url.startsWith('https://www.youtube.com/')) {
            //   debugPrint('blocking navigation to ${request.url}');
            //   return NavigationDecision.prevent;
            // }
            // debugPrint('allowing navigation to ${request.url}');
            // 处理每次导航请求
            // if (!request.url.startsWith('http://') && !request.url.startsWith('https://')) {
            //   // 如果 URL 不是以 http 或 https 开头，替换为 https
            //   String newUrl = 'https://${request.url}';
            //   controller.loadRequest(Uri.parse(newUrl)); // 重新加载替换后的 URL
            //   return NavigationDecision.prevent; // 阻止原始请求
            // }
            // return NavigationDecision.navigate;

            String newUrl = _processUrl(request.url);
            if (newUrl != request.url) {
              controller.loadRequest(Uri.parse(newUrl)); // 重新加载替换后的 URL
              return NavigationDecision.prevent; // 阻止原始请求
            }
            return NavigationDecision.navigate; // 允许导航
          },
        ),
      )
      ..addJavaScriptChannel(
        'Toaster',
        onMessageReceived: (JavaScriptMessage message) {
          ScaffoldMessenger.of(context).showSnackBar(
            SnackBar(content: Text(message.message)),
          );
        },
      )
      ..loadRequest(Uri.parse(_urlController.text));

    // #docregion platform_features
    // if (controller.platform is AndroidWebViewController) {
    // AndroidWebViewController.enableDebugging(true);
    //   (controller.platform as AndroidWebViewController)
    //       .setMediaPlaybackRequiresUserGesture(false);
    // }
    // #enddocregion platform_features

    _webViewController = controller;
  }

  // 检查并处理初始 URL
  String _processUrl(String url) {
    // 使用 // 分割 URL
    List<String> parts = url.split('//');

    if (parts.length == 1) {
      // 如果只有一个部分，添加 https:// 前缀
      return 'https://$url';
    } else {
      // 如果有多个部分，用 https 替换第一个部分（即协议部分）
      String newUrl = 'https://${parts.sublist(1).join('//')}';
      return newUrl;
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: TextField(
          controller: _urlController,
          decoration: InputDecoration(
            hintText: 'Enter URL',
            border: InputBorder.none,
            suffixIcon: IconButton(
              icon: Icon(Icons.arrow_forward),
              onPressed: () {
                String url = _urlController.text;
                if (!url.startsWith('http')) {
                  url = 'https://$url'; // 自动添加 `https://` 前缀
                }
                Uri uri = Uri.parse(url);
                _webViewController.loadRequest(uri); // 加载指定的 URL
              },
            ),
          ),
          style: TextStyle(color: Colors.white),
          onSubmitted: (value) {
            String url = value;
            if (!url.startsWith('http')) {
              url = 'https://$url';
            }
            Uri uri = Uri.parse(url);
            _webViewController.loadRequest(uri); // 加载指定的 URL
          },
        ),
        backgroundColor: Colors.blue,
        actions: [
          IconButton(
            icon: Icon(Icons.arrow_back),
            onPressed: () {
              _webViewController.goBack(); // 回退到上一个页面
            },
          ),
          IconButton(
            icon: Icon(Icons.refresh),
            onPressed: () {
              _webViewController.reload(); // 重新加载当前页面
            },
          ),
        ],
      ),
      body: WebViewWidget(
        controller: _webViewController,
      ),
      // body: WebView(
      //   initialUrl: 'https://www.example.com', // 默认打开的页面
      //   javascriptMode: JavascriptMode.unrestricted,
      //   onWebViewCreated: (WebViewController webViewController) {
      //     _webViewController = webViewController;
      //   },
      //   onPageStarted: (String url) {
      //     setState(() {
      //       currentUrl = url; // 更新当前页面的URL
      //     });
      //   },
      //   onPageFinished: (String url) {
      //     _urlController.text = url; // 更新输入框中的URL
      //   },
      // ),
    );
  }
}
